namespace Digitalmes.Application.Mes.Traceability.Products;

/// <summary>
/// 工步执行记录 DTO 对象。
/// </summary>
public sealed class ProdStepTaskExecutionDto : Dto
{
    /// <summary>
    /// 关联的进站 Id。
    /// </summary>
    /// <remarks>因为工步执行时还未有工艺步骤数据记录，因此才有进站 Id 作为关联。</remarks>
    public long InboundId { get; set; }

    /// <summary>
    /// SN
    /// </summary>
    [NotNull]
    public string? Sn { get; set; }

    /// <summary>
    /// 工艺路线 Id。
    /// </summary>
    public long RoutingId { get; set; }

    /// <summary>
    /// 工序 Id。
    /// </summary>
    public long OperationId { get; set; }

    /// <summary>
    /// 工位 Id。
    /// </summary>
    public long WorkstationId { get; set; }

    /// <summary>
    /// 工艺步骤 Id。
    /// </summary>
    public long StepId { get; set; }

    /// <summary>
    /// 工步 Id。
    /// </summary>
    public long StepTaskId { get; set; }

    /// <summary>
    /// 工步编号。
    /// </summary>
    public string? StepTaskCode { get; set; }

    /// <summary>
    /// 工步名称。
    /// </summary>
    public string? StepTaskName { get; set; }

    /// <summary>
    /// 产品在当前工步执行开始时间
    /// </summary>
    public DateTime StartTime { get; set; }

    /// <summary>
    /// 产品在当前工步执行结束时间
    /// </summary>
    public DateTime? EndTime { get; set; }

    /// <summary>
    /// 作业结果（1->OK，2->NG，3->强制OK，4->强制NG）
    /// </summary>
    public PassEnum PassResult { get; set; }

    /// <summary>
    /// 标准作业时长(秒)，为 0 时不做计算。
    /// </summary>
    public int StandardDuration { get; set; }

    /// <summary>
    /// 实际用时。
    /// </summary>
    public double CycleTime { get; set; }

    /// <summary>
    /// 工步过程数据集合。
    /// </summary>
    public List<ProdStepTaskDataDto>? Data { get; set; }
}
